<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
            const p = new Promise((resolve, reject) => {
                // 一些异步代码
                resolve('success')
            })
            // console.log(p)

            // 1. promise.then() 返回一个promise对象
            const res1 = p.then(res => {
                console.log(res)
            })

            // console.log(res1)

            // res1.then(res => {
            //     console.log(res)
            // })
            // console.log(res)


            // 2. 如果p.then中回调函数，返回了一个非promise的值，
            // 则新的promise的将使用这个值作为成功的结果
            const res2 = p.then(res => {
                console.log(res)
                return 'second success'
            })
            // console.log(res)

            // 3. 如果回调函数本身返回了一个promise对象，则then方法调用后返回的新promise
            // 与该promise对象采用相同的成功结果或失败原因
            const res3 = p.then(res => {
                console.log(res)
                return new Promise((resolve,reject) => {reject(1)})
            })
            // console.log(res)


            // ===> 一句话总结 p.then() 返回的是一个promise对象，
            // 1. then的回调中没有return ，那么promise成功的结果为undefined
            // 2. then中return了一个非promise对象，新promise以该值作为成功的结果
            // 3. then中return了一个promise对象，新promise 成功或失败与它相同
                </script>
</body>
</html>